// 导入Controller
const {Controller} = require('egg')

// 创建user控件
class UserController extends Controller{
    // 用户注册
    async create(ctx){
       try{
        const result = await ctx.service.user.createUser(ctx.request.body);
        if(result){
            ctx.body = {
                code:200,
                msg:'注册成功'
            }
        }
       }catch(e){
            ctx.status = 200;
            ctx.body = {
                msg:'注册失败'
            }
       }
    }

    // 用户查询
    async index(){
       try{
            // 先查询用户token是否过期,token过期会报错
        this.ctx.app.jwt.verify(this.ctx.request.header.token,this.ctx.app.config.jwt.serect);
        // 如果没过期再去数据库进行查找
        const result = await this.ctx.service.user.getUserInfo(this.ctx.query.id);
        if(result){
            this.ctx.body = {
                code:200,
                data:result
            }
        }else{
            this.ctx.body = {
                code:401,
                msg:'用户不存在'
            }
        }
       }catch(e){
        //    身份过期则需要重新登录
        this.ctx.body = {
            code:500,
            msg:'用户身份已过期,请重新登录'
        }
       }
    }

    // 查询用户邮箱是否被绑定
    async show(ctx){
        const res = await ctx.service.user.checkEmail(ctx.params.id);
        if(res){
            // 如果有值代表已经被注册
            ctx.body = {
                code:200,
                data:true,
                msg:'邮箱已被注册,请更换邮箱地址'
            }
        }else{
            // 没有被注册
            ctx.body = {
                code:200,
                data:false,
                msg:'邮箱可被绑定'
            }
        }
    }

    // 修改用户信息
    async update(ctx){
        const res = await ctx.service.user.modifyUserInfo(ctx.params.id,ctx.request.body)
        if(res){
            ctx.body = {
                code:200,
                msg:'用户信息修改成功'
            }
        }else{
            ctx.body = {
                code:'500',
                msg:'用户信息修改失败'
            }
        }
    }
}

// 导出
module.exports = UserController;